﻿using SIIE_ERP.Codigo;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SIIE_ERP.BaseDatos.Configuracion 
{
    public class dbo_Sec_Usuario_PV  
    {
        #region Propiedades

        #endregion
        
        #region Constructores

        public dbo_Sec_Usuario_PV()
        {
        }

        #endregion
        
        #region INSERT

        public Respuesta Insert_Sec_Usuario_PV(

            int IdUser,
            int PV_Privilegio       
        )
        {
            try
            {
                string Query = @"INSERT INTO dbo_Sec_Usuario_PV
                             (
	                            IdUser,
                                PV_Privilegio,
	                            Id_Trans_Apertura_Terminal
                             )
                             VALUES
                             (
                                @@IdUser,                                
	                            @@PV_Privilegio,	        
	                            null
                             )";

                Query = Query.Replace("@@IdUser", IdUser.ToString());
                Query = Query.Replace("@@PV_Privilegio", PV_Privilegio.ToString());                
                
                return SrvDB.ExecuteQuery_Insert(Query);
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }


        #endregion

        #region UPDATE

        public Respuesta Update_Usuario_PV(

            int IdUser,
            PuntoVenta_Id PV_Privilegio            
        )
        {
            try
            {
                string Query = @"UPDATE dbo_Sec_Usuario_PV SET
                                    
                                    PV_Privilegio = @@PV_Privilegio
                                    
                                 WHERE 
                                    IdUser = @@IdUser ";

                Query = Query.Replace("@@IdUser", IdUser.ToString());
                Query = Query.Replace("@@PV_Privilegio", PV_Privilegio.GetHashCode().ToString());
                
                return SrvDB.ExecuteQuery_Update(Query);
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }

        public Respuesta Update_Usuario_PV_Terminal(

            int IdUser,
            int Id_Trans_Apertura_Terminal
        )
        {
            try
            {
                string Query = @"UPDATE dbo_Sec_Usuario_PV SET
                                                                 
                                    Id_Trans_Apertura_Terminal = @@Id_Trans_Apertura_Terminal
                                    
                                 WHERE 
                                    IdUser = @@IdUser AND                                     
                                    Id_Trans_Apertura_Terminal = @@Id_Trans_Apertura_Terminal";

                Query = Query.Replace("@@IdUser", IdUser.ToString());                
                Query = Query.Replace("@@Id_Trans_Apertura_Terminal", Id_Trans_Apertura_Terminal.ToString());

                return SrvDB.ExecuteQuery_Update(Query);
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }        

        #endregion

        #region SELECT

        /// <summary>
        /// 
        /// </summary>
        /// <param name="Nombre">Nombre de Usuario_PV que se ingresa en el Login.</param>
        /// <returns>Devuelve -1 en caso de ocurrir un error, cualquier otro número corresponde al Id del Usuario_PV.</returns>
        public PuntoVenta_Id Get_Usuario_PV(int IdUser)
        {
            try
            {
                string Query = "SELECT * FROM dbo_Sec_Usuario_PV WHERE IdUser = @@IdUser";

                Query = Query.Replace("@@IdUser", IdUser.ToString());

                if (SrvDB.ExecuteQuery_Get(Query).Rows[0]["PV_Privilegio"].ToString().Equals("1"))
                    return PuntoVenta_Id.PV_Sin_Acceso;
                else if (SrvDB.ExecuteQuery_Get(Query).Rows[0]["PV_Privilegio"].ToString().Equals("2"))
                    return PuntoVenta_Id.Cajero;
                else if (SrvDB.ExecuteQuery_Get(Query).Rows[0]["PV_Privilegio"].ToString().Equals("3"))
                    return PuntoVenta_Id.Supervisor;
            }
            catch (Exception)
            {
                return PuntoVenta_Id.ERROR;                
            }

            return PuntoVenta_Id.ERROR;                
        }

        #endregion
    }
}
